/**
 * Created by LaoXu on 2017/12/22.
 * @description:基本校验框架
 */
!function (root, factory) {
    if (typeof define === 'function' && define.amd) {
        define([], factory);
    } else if (typeof exports === 'object') {
        module.exports = factory();
    } else {
        root.xVerify = factory();
    }

}(this, function () {
    var xVerify = {};

    /* 定义正则表达式 */
    // 手机号码
    var patternPhone = /^1[34578]\d{9}$/;
    // 非法字符
    var patterSpecial = new RegExp("[`~!@#$^&*=|{}':;',\\[\\].《》/?~！@#￥……&*（）——|{}【】‘；：”“'。，、？]", "g");
    // 中文
    var patternCn = /^[\u0391-\uFFE5\w]+$/;
    // 密码 6~16位字母和数字
    var patternPassword = /^[a-zA-Z0-9][a-zA-Z0-9_]{5,15}$/;

    /**
     * 字符串非空判断
     * @param str
     * @returns {boolean}
     */
    xVerify.isStrEmpty = function (str) {
        str = str + "" || "";
        if (str == null || str == "" || str.trim().length <= 0) {
            return true;
        }
        return false;
    };

    /**
     * 正则表达式验证
     * @param data 数据
     * @param reg 正则表达式
     * @returns {boolean}
     */
    xVerify.regexp = function (data, reg) {
        data = data || "";
        reg = reg || /^/;
        if (this.isStrEmpty(data)) {
            return false;
        }
        return reg.test(data);
    }

    /**
     * 校验手机号码
     * @param phoneNumber 手机号码
     * @returns {boolean}
     */
    xVerify.checkPhone = function (phoneNumber) {
        return this.regexp(phoneNumber, patternPhone);
    }

    /**
     * 检测是否为特殊字符
     * @param str 字符
     * @returns {boolean}
     */
    xVerify.checkSpecial = function (str) {
        return this.regexp(str, patterSpecial);
    }

    /**
     * 检测是否为中文
     * @param str 字符
     * @returns {boolean}
     */
    xVerify.checkCN = function (str) {
        return this.regexp(str, patternCn)
    }

    /**
     * 检测密码是否合法
     * @param pwd 输入的密码
     * @returns {boolean}
     */
    xVerify.checkPwd = function (pwd) {
        return this.regexp(pwd, patternPassword)
    }

    return xVerify;
});